// #include<stdio.h>
// #include<stdlib.h>

// //int rand = 0;
// int rand1 = 0;

// // 命名冲突 
// // 我们和库，我们之间

// int main()
// {
// 	printf("%d\n", rand1);

// 	printf("hello world\n");

// 	return 0;
// }



// #include<stdio.h>
// #include<stdlib.h>
// //
// // 命名空间域
// // 隔壁张大爷自留地
// namespace ltw
// {
// 	namespace fz
// 	{
// 		int rand = 0;

// 		int Add(int left, int right)
// 		{
// 			return left + right;
// 		}

// 		struct Node
// 		{
// 			struct Node* next;
// 			int val;
// 		};
// 	}
// }

// namespace fz
// {
// 	int rand = 0;

// 	int Add(int left, int right)
// 	{
// 		return (left + right) * 10;
// 	}
// }

// // 命名冲突 
// // 我们和库，我们之间
// // 用变量/函数....
// // 编译默认查找
// // a、当前局部域				： 自留地
// // b、全局域找				： 村子野地
// // 不会到其他命名空间中去找   ： 隔壁张大爷自留地 
// int main()
// {
// 	printf("%p\n", rand);
// 	printf("%d\n", ltw::fz::rand);

// 	printf("hello world\n");

// 	printf("%d\n", ltw::fz::Add(1,2));
// 	printf("%d\n", fz::Add(1,2));

// 	struct ltw::fz::Node pnode;


// 	return 0;
// }




// int a = 0;

// int main()
// {
// 	int a = 1;
// 	printf("%d\n", a);
// 	printf("%d\n", ::a);

// 	return 0;
// }





// #include"Queue.h"
// #include"Stack.h"

// typedef struct Stack
// {
// }ST;

// void STInit(ST* ps)
// {}

// struct Queue
// {
// 	//...
// };

// // 展开命名空间 
// //using namespace bit;
// // 编译默认查找
// // a、当前局部域				： 自留地
// // b、全局域找				： 村子野地
// // c、到展开的命名空间中查找  ： 相当于张大爷在自己的自留地加了声明，谁需要就来摘

// int main()
// {
// 	struct Stack st1;
// 	STInit(&st1);
// 	printf("%d\n", sizeof(st1));

// 	ltw::ST st;
// 	printf("%d\n", sizeof(st));

// 	STInit(&st);
// 	STPush(&st, 1);
// 	STPush(&st, 2);
// 	STPush(&st, 3);
// 	STPush(&st, 4);

// 	return 0;
// }





//#include"Queue.h"
//#include"Stack.h"
//
//namespace xjh
//{
//	typedef struct Stack
//	{
//	}ST;
//
//	void STInit(ST* ps)
//	{}
//
//
//	struct Queue
//	{
//		//...
//	};
//}
//
//// 展开命名空间 
//using namespace ltw;
//using namespace xjh;
//
// // 编译默认查找
// // a、当前局部域				： 自留地
// // b、全局域找				： 村子野地
// // c、到展开的命名空间中查找  ： 相当于张大爷在自己的自留地加了声明，谁需要就来摘
//
//int main()
//{
//	struct Stack st1;
//	STInit(&st1);
//	printf("%d\n", sizeof(st1));
//
//	ltw::ST st;
//	printf("%d\n", sizeof(st));
//
//	STInit(&st);
//	STPush(&st, 1);
//	STPush(&st, 2);
//	STPush(&st, 3);
//	STPush(&st, 4);
//
//	return 0;
//}





// #include"Queue.h"
// #include"Stack.h"

// // 编译默认查找
// // a、当前局部域				： 自留地
// // b、全局域找				： 村子野地
// // c、到展开的命名空间中查找  ： 相当于张大爷在自己的自留地加了声明，谁需要就来摘

// // 指定展开某一个
// using ltw::x;

// // 三种
// // 1、指定访问
// // 2、全展开
// // 3、指定展开某一个

// // 局部域
// // 全局域
// // 命名空间域
// // 不同域可以定义同名的变量/函数/类型

// int main()
// {
// 	ltw::ST st;
// 	STInit(&st);
// 	STPush(&st, 1);
// 	STPush(&st, 2);
// 	STPush(&st, 3);
// 	STPush(&st, 4);

// 	// x经常使用
// 	// y偶尔使用
// 	printf("%d\n", x);
// 	printf("%d\n", x);
// 	printf("%d\n", x);
// 	printf("%d\n", x);
// 	printf("%d\n", x);
// 	printf("%d\n", x);
// 	printf("%d\n", x);
// 	printf("%d\n", ltw::y);

// 	return 0;
// }





//#include<iostream>
//
//int main()
//{
//	// << 流插入
//	int i = 0;
//	double j = 1.11;
//
//	// 自动识别类型
//	std::cout << i << " " << j << '\n' << std::endl;
//	std::cout << i << " " << j << '\n' << std::endl;
//
//	return 0;
//}

//#include<iostream>
//using namespace std;
//
//int main()
//{
//	// << 流插入
//	int i = 0;
//	double j = 1.11;
//
//	// 自动识别类型
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//
//	return 0;
//}




// vc6.0
//#include<iostream.h>

//#include<iostream>
////#include<bits/stdc++.h>
//
//using std::cout;
//using std::endl;
//
//int main()
//{
//	// << 流插入
//	int i = 0;
//	double j = 1.11;
//
//	// 自动识别类型
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j << '\n' << endl;
//	cout << i << " " << j ;
//	cout << i << ":::" << j << '\n' << endl;
//
//	// >> 流提取
//	std::cin >> i >> j;
//	//scanf("%d%lf", &i, &j);
//
//	cout << i << " " << j << '\n' << endl;
//	printf("%d %.1lf\n", i, j);
//
//
//	return 0;
//}




#include<iostream>
using namespace std;

#include"Stack.h"

// 缺省参数
void F1(int a = 1)
{
	cout << a << endl;
}

// 全缺省
void F2(int a = 10, int b = 20, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}

// 半缺省，从右往左缺省
void F3(int a, int b = 20 , int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}

int main()
{
	F2(1, 2, 3);
	F2(1, 2);
	F2(1);
	F2();

	// 必须顺序传，不能跳跃着传
	// F2(1, ,2);

	F3(1);
	F3(1, 2);
	F3(1, 2, 3);

	ltw::ST st1;
	STInit(&st1, 10000);
	for (int i = 0; i < 10000; i++)
	{
		STPush(&st1, i);
	}

	ltw::ST st2;
	STInit(&st2, 10);
	for (int i = 0; i < 10; i++)
	{
		STPush(&st2, i);
	}

	ltw::ST st3;
	STInit(&st3);

	return 0;
}